// 题目要求：
// 给一个正整数 n, 给定一个数组，一共有 n 个元素
// 进行 q 次询问，每次询问给一个整数 x，要求输出数组前 x 个数中的第二大的值

// 解题思路：
// 定义一个数组 f，用于存放前 i 个数中的最大值
// 定义一个数组 g，用于存放前 i 个数中的第二大的值

// 分情况讨论：
// 1. 如果 arr[i] > f[i - 1], f[i - 1] = arr[i], g[i] = f[i - 1]
// 2. 如果 arr[i] > g[i - 1] && arr[i] < f[i - 1], f[i] = f[i - 1], g[i] = arr[i]
// 3. 如果 arr[i] < g[i], f[i] = f[i - 1], g[i] = g[i - 1]

// 每次查询返回 g[x] 即可

// 优化：
// 可以不定义 f 和 g
// 用两个变量就可以每次找出一个最大值，一个第二大值
// 将第二大值存到一个数组里面即可

import java.util.*;


public class SecondMaximum {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();

        int[] arr = new int[n + 1];
        for(int i = 1; i <= n; i++){
            arr[i] = in.nextInt();
        }

        int[] f = new int[n + 1];
        int[] g = new int[n + 1];

        f[1] = arr[1];
        g[1] = 0;

        for(int i = 2; i <= n; i++){
            int x = arr[i];
            if(f[i - 1] <= x){
                f[i] = x;
                g[i] = f[i - 1];
            }else if(g[i - 1] < x){
                f[i] = f[i - 1];
                g[i] = x;
            }else{
                f[i] = f[i - 1];
                g[i] = g[i - 1];
            }
        }

        int t = in.nextInt();

        while(t-- > 0){
            int x = in.nextInt();
            System.out.println(g[x]);
        }
    }
}
